/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */


/**
 * 本地调试：
 *     app项目请使用npm run watch命令构建
 *     pc项目请使用npm run watch-admin命令构建
 *
 * -------------------------------------------------\\
 *
 * 发布线上打包：
 *     app项目请使用npm run prod命令构建
 *     pc项目请使用npm run prod-admin命令构建
 *     
 */


const mix = require('laravel-mix');
/**
 * 得到package.json中的参数 --env.admin 转换成 一个对象 {admin: true}
 */
const { env } = require('minimist')(process.argv.slice(2));


/**
 * 判断如果是admin那就执行 webpack.admin.js 构建后台项目，构建之后return之后阻止构建前台项目
 */
if (env && env.admin) {
    require(`${__dirname}/webpack.admin.js`);
    return;
}

/**
 * 判断运行环境，version 方法会自动附加唯一hash到已编译文件名，从而方便实现缓存刷新
 */
if (mix.inProduction()) {
    mix.version();
}

mix.webpackConfig({
    output: {
        publicPath: '/wapp/', // 设置默认打包目录
        chunkFilename: `js/[name].${mix.inProduction() ? '[chunkhash].' : ''}js` // 路由懒加载的时候打包出来的js文件
    },
})

mix.js('resources/assets/wapp/main.js', 'public/wapp/js')
    // 打包基础样式
    .sass('resources/assets/wapp/style/reset.scss', 'public/wapp/css')
    // 项目优化：对于很多加载的第三方包，我们轻易不会修改，顶多是版本升级，对于这部分代码，可能还非常大，不需要因为我们业务代码的修改，而重新编译一次，使用extract对需要的资源，可以进行持久的缓存下来。
    .extract(['vue', 'vue-router', 'axios'])
    // 设置资源目录
    .setResourceRoot('/wapp/')
    // 设置 mix-manifest.json 文件的生成路径
    .setPublicPath('public/wapp/')